package com.smart.community.commons.entity;

import java.time.LocalDateTime;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;

import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 系统日志实体类
 * 
 * @author Wu.Liang
 * @since 2025-01-30
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("sc_system_log")
public class SystemLog {
    
    /**
     * 日志ID
     */
    @TableId(value = "id", type = IdType.ASSIGN_ID)
    private Long id;
    
    /**
     * 日志级别：1-DEBUG，2-INFO，3-WARN，4-ERROR
     */
    @TableField("log_level")
    private Integer logLevel;
    
    /**
     * 日志标题
     */
    @TableField("log_title")
    private String logTitle;
    
    /**
     * 日志类型：1-系统日志，2-操作日志，3-错误日志，4-安全日志
     */
    @TableField("log_type")
    private Integer logType;
    
    /**
     * 模块名称
     */
    @TableField("module_name")
    private String moduleName;
    
    /**
     * 操作名称
     */
    @TableField("operation_name")
    private String operationName;
    
    /**
     * 操作描述
     */
    @TableField("operation_desc")
    private String operationDesc;
    
    /**
     * 请求URL
     */
    @TableField("request_url")
    private String requestUrl;
    
    /**
     * 请求方法
     */
    @TableField("request_method")
    private String requestMethod;
    
    /**
     * 请求参数
     */
    @TableField("request_params")
    private String requestParams;
    
    /**
     * 响应数据
     */
    @TableField("response_data")
    private String responseData;
    
    /**
     * 响应结果
     */
    @TableField("response_result")
    private String responseResult;
    
    /**
     * 操作用户ID
     */
    @TableField("user_id")
    private Long userId;
    
    /**
     * 操作用户名
     */
    @TableField("username")
    private String username;
    
    /**
     * 用户类型
     */
    @TableField("user_type")
    private String userType;
    
    /**
     * IP地址
     */
    @TableField("ip_address")
    private String ipAddress;
    
    /**
     * 用户代理
     */
    @TableField("user_agent")
    private String userAgent;
    
    /**
     * 执行时间(毫秒)
     */
    @TableField("execution_time")
    private Integer executionTime;
    
    /**
     * 错误信息
     */
    @TableField("error_message")
    private String errorMessage;
    
    /**
     * 堆栈信息
     */
    @TableField("stack_trace")
    private String stackTrace;
    
    /**
     * 日志时间
     */
    @TableField("log_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime logTime;
    
    /**
     * 状态
     */
    @TableField("status")
    private Integer status;
    
    /**
     * 创建时间
     */
    @TableField("create_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    
    /**
     * 日志内容
     */
    @TableField("log_content")
    private String logContent;
    
    /**
     * 操作人
     */
    @TableField("operator")
    private String operator;
    
    /**
     * 操作时间
     */
    @TableField("operation_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime operationTime;
    
    /**
     * 创建人
     */
    @TableField("create_by")
    private Long createBy;
}
